// 版权所有2017 etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

// 包租赁通过获取
// 通过客户端租赁协议对密钥进行独占写入访问，从而从本地缓存进行线性化读取。此
// 租赁层可以直接包装etcd客户端，也可以通过etcd grpc代理服务器公开
// 授予多个客户端写访问权。
// 
// 首先，从客户端3创建一个租赁KV。客户端“cli”：
// 
// lkv，错误：=租赁。NewKV（cli，“租赁前缀”）
// 如果出错！=零{
// /处理错误
// }
// /
// 对密钥“abc”的范围请求尝试获取租赁密钥，以便在本地缓存该范围的
// 密钥。在服务器上，租赁密钥存储为“租赁前缀/abc”：
// 
// resp，err:=lkv。Get（context.TODO（），“abc”）
// 
// 使用“lkv”的未来线性化读取请求将在租约的生存期内在本地提供服务：
// 
// resp，err=lkv。Get（context.TODO（），“abc”）
// 
// 如果另一个租赁客户机写入租赁密钥，则所有者放弃其独占的
// 访问权限，允许写入者修改密钥：
// 
// lkv2，错误：=leasing。NewKV（cli，“租赁前缀”）
// 如果出错！=nil{
// /句柄错误
// }
// /lkv2。Put（context.TODO（），“abc”，“456”）
// resp，err=lkv。获取（“abc”）
// 
package leasing
